package com.wobito.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wobito.pojo.bean.Book;
import com.wobito.pojo.dto.api.GetBookByCabinetDTO;
import com.wobito.pojo.dto.book.BookByLatIdDTO;
import com.wobito.pojo.dto.book.BookByQueryNameDTO;
import com.wobito.pojo.dto.book.BookDTO;
import com.wobito.pojo.vo.book.AddBookVO;
import com.wobito.pojo.vo.book.BookVO;
import com.wobito.pojo.vo.book.UpdateBookVO;

import java.util.List;

/**
 * @Author Wangbaba
 * @Date 2024/7/1 10:13
 * @Version 1.0
 */
public interface BookService extends IService<Book> {

    /**
     * 根据条件查询书籍
     *
     * @param bookVO
     * @return
     */
    List<BookDTO> selectBookList(BookVO bookVO);

    /**
     * 根据柜格查找书籍
     *
     * @param latId
     * @return
     */
    List<BookByLatIdDTO> selectFilesByLatId(Long latId);

    /**
     * 根据条件查询
     */
    List<BookByQueryNameDTO> selectFileByQueryName(String queryName);

    /**
     * 根据RFID获取图书
     * @param rfid
     * @return
     */
    Book selectBookByRFID(String rfid);

    /**
     * 获取在库书籍信息
     * @param cabinetId
     * @return
     */
    List<GetBookByCabinetDTO> selectBookByCabinet(Long cabinetId);

    /**
     * 查询设备图书信息
     * @param cabinetId
     * @param state
     * @return
     */
    long selectBookNumByCabinet(Long cabinetId, Integer state);

    /**
     * 添加书籍
     *
     * @param addBookVO
     * @return
     */
    int insertBook(AddBookVO addBookVO);

    /**
     * 修改书籍
     *
     * @param updateBookVO
     * @return
     */
    int updateBook(UpdateBookVO updateBookVO);

    /**
     * 增加书籍搜索量
     *
     * @param ids
     * @return
     */
    int updateQueryNumById(List<Long> ids);

    /**
     * 关门盘点rfid
     *
     * @param rfids
     * @param latId
     * @return
     */
    int inventoryBooks(List<String> rfids, Long latId,Long personId);

    /**
     * 出库书籍
     *
     * @param rfids
     * @param latId
     * @return
     */
    int outBoundBooks(List<String> rfids, Long latId,Long personId);

    /**
     * 入库书籍
     *
     * @param rfids
     * @param latId
     * @return
     */
    int inBoundBooks(List<String> rfids, Long latId,Long personId);
}
